package thinkinginjava;

class Class1 {
	int x,y;
	
	Class1(int x, int y) {
		this.x = x;
		this.y = y;
	}
	
	public int add(int x, int y) {
		return this.x + x + this.y + y;
	}
	
	public int add(Class1 c) {
		return add(c.x, c.y);
	}
	
}

class Class2 extends Class1 {
	int z;
	Class2(int x, int y, int z) {
		super(x, y);
		this.z = z;
	}
	
	public int add(int x, int y, int z) {
		return this.x + x + this.y + y + this.z + z;
	}
	
	
	public int add(Class2 c) {
		return add(c.x, c.y, c.z);
	}
	
	public int add(int x, int y) {
		return this.x + x + this.y + y;
	}
	
//	public int add(Class1 c) {
//		return add(c.x, c.y);
//	}
//	
}
public class MethodExtendArgMatch {
	public static void main(String[] args) {
		Class1 c1 = new Class1(10,20);
		Class2 c2 = new Class2(10, 20, 30);
		
		
		
		System.out.println(c2.add(10,20,30));
		System.out.println(c2.add(10, 20));
		System.out.println(c2.add(c2));
		System.out.println(c2.add(c1));
		System.out.println(c1.add(c2));
	}
}
